Transaction Verification Through Enhanced Authentication

ABSTRACT

Methods, systems, and computer program products for providing transaction verification through enhanced authentication are provided. A method performed by a computer system may include receiving an application programming interface (API) request from a client, detecting a change associated with the API request as compared to a prior use of the API by the client, generating an encrypted challenge to authenticate the API request based on detecting the change, and issuing the encrypted challenge to the client to authenticate the API request.

CROSS-REFERENCE TO RELATED APPLICATION

This application is a continuation of U.S. patent application Ser. No.14/496,160, filed Sep. 25, 2014, which is hereby incorporated byreference in its entirety.

TECHNICAL FIELD

The present invention generally relates to computer system security and,more particularly, to verification of computer-initiated transactionalrequests using enhanced authentication.

BACKGROUND

An application programming interface (API) generally refers to a set ofone or more functions, procedures, components, and services provided bya software library or a computer system. Web APIs allow clients toconsume API services offered by another computer system over theinternet. However, web APIs can be vulnerable to various types ofcyber-attacks.

For example, a takeover of a client computer system can provide anattacker with credentials and unlimited access to web APIs accessiblefrom a compromised client. In addition, a man-in-the-middle attacker mayintercept and use web API authentication credentials to access privateinformation, credit card accounts, bank accounts, or other secure databy impersonating a client.

Highly restrictive security measures may offer increased web APIsecurity. However, such measures can disrupt the flow of legitimatetraffic and transactions. Accordingly, improved methods ofauthentication can provide better protection against takeover,man-in-the-middle, and other types of cyber-attacks while flexiblyaccepting routine changes occurring on a computer system or networkwithout disrupting legitimate activity.

BRIEF DESCRIPTION OF THE DRAWINGS

Various examples of the present disclosure will be understood more fullyfrom the detailed description given below and from the accompanyingdrawings of various examples of the disclosure. In the drawings, likereference numbers may indicate identical or functionally similarelements. The drawing in which an element first appears is generallyindicated by the left-most digit in the corresponding reference number.

FIG. 1 is a block diagram illustrating a system architecture, inaccordance with various examples of the present disclosure.

FIG. 2 is a flow diagram illustrating transaction verification usingenhanced authentication, according to an example of the presentdisclosure.

FIG. 3 is a flow diagram illustrating transaction verification usingenhanced authentication with encryption, according to an example of thepresent disclosure.

FIG. 4 is a block diagram of an exemplary computer system that mayperform one or more of the operations described herein.

DETAILED DESCRIPTION

Systems, methods, and computer program products for verifyingtransactions using enhanced authentication are disclosed.

In an example, a client computer system seeks to use an applicationprogramming interface (API) provided by a server computer system. Theserver receives a key from the client for encrypting one or moreadditional authentication challenges to be issued to the client beyond afirst level of authentication.

In an example, a client may provide the key to the server at a time ofinitial account registration and setup, at a subsequent time as part ofan account or registration update, when the account associated with theclient exceeds a transaction volume threshold, when the account or salesof the account associated with the client exceeds a monetary valuethreshold, when it is determined that data handled by the accountassociated with the client is classified as sensitive, based on arequest from the server, or at any other time or based on any othercriteria.

In an example, the client sends a request to use a server-provided API.The client also provides one or more authentication credentials to allowthe server to authenticate the client's API request based on a firstlevel of authentication.

In an example, the server authenticates the API request, analyzesinformation associated with the client (e.g., identity, location,behavior, etc.), and detects that one or more attributes of the clienthave changed. In response, the server generates an additionalauthentication challenge to further authenticate the API requestreceived from the client. In one example, the server encrypts theadditional authentication challenge using the key received from theclient and sends the encrypted additional authentication challenge tothe client.

In an example, the client receives the encrypted additionalauthentication challenge. In one example, the key for decrypting theencrypted additional authentication challenge is stored in a highlysecure area owned by an administrator or other privileged account of theclient computer system. The client escalates the encrypted additionalauthentication challenge to the privileged account having access to thedecryption key in the highly secure area. The privileged account thenreturns the decrypted additional authentication challenge for furtherprocessing.

In an example, the server receives a response to the encryptedadditional authentication challenge from the client. The server thenanalyzes the response, determines whether a result of the additionalauthentication challenge was successful or unsuccessful, and processesthe API request received from the client based on the result.

Accordingly, aspects of the present disclosure provide improved securityof application programming interfaces (APIs) to protect against servertakeovers and man-in-the middle attacks while allowing administrativeand other legitimate changes to be made without incident.

FIG. 1 illustrates an exemplary system architecture 100 in whichexamples of the present disclosure may be implemented. Systemarchitecture 100 includes a server machine 110, a data store 180 andclient machines 102A-102N connected to a network 104. Network 104 may bea public network (e.g., the Internet), a private network (e.g., a localarea network (LAN) or wide area network (WAN)), or a combinationthereof. In an example, network 104 may include the Internet and/or oneor more intranets, wired networks, wireless networks, and/or otherappropriate types of communication networks. In one example, the network104 may comprise a wireless telecommunications network (e.g., cellularphone network) adapted to communicate with other communication networks,such as the Internet.

Data store 180 is persistent storage that is capable of storing varioustypes of data, such as text, audio, video and image content. In someexamples data store 180 might be a network-attached file server, whilein other examples data store 180 might be some other type of persistentstorage such as an object-oriented database, a relational database, andso forth.

Client machines 102A-102N may be personal computers (PC), laptops,mobile phones, tablet computers, server computers, wearable computingdevices, or any other computing devices. Client machines 102A-102N mayrun an operating system (OS) that manages hardware and software of theclient machines 102A-102N. A browser (not shown) may run on the clientmachines (e.g., on the OS of the client machines). The browser may be aweb browser that can access content and services provided by a webserver 120 of server machine 110. Other types of computer programs andcomputer scripts also may run on client machines 102A-102N.

Client machines 102A-102N each may include a web server 104A, 104N and asecure area 106A, 106N used to store keys 108A, 108N. Web servers 104A,104N may include web and/or application servers configured to utilizeone or more application programming interfaces (APIs) provided by servermachine 110. An API generally refers to an interface provided forutilizing functionality of software components or other software-basedservices available from a computer system or software library.

APIs may include any software-based API, such as operating system APIs,programming language APIs, web-based APIs, web services (SOAP, REST,etc.), public APIs, private APIs, proprietary APIs, mobile APIs,transactional APIs, etc. In some examples, use of APIs provided byserver machine 110 may be secured and/or tied to user accounts ofclients 102A-102N. Thus, a client 102A may provide one or moreauthentication credentials (e.g., a user name and/or password) to servermachine 110 to use an API exposed by server machine 110.

In an example, client machines 102A-102N use an API provided by servermachine 110 to initiate and complete various types of transactions. Forexample, client machines 102A-102N may use one or more server machine110 APIs to purchase goods, sell goods, transfer money, make payments,perform various financial transactions, etc. Client machines 102A-102Nmay be associated with the same organization or may include computersystems that are operated by different organizations. For example,client machines 102A-102N may be comprised of computer systems ofunrelated organizations that each have contracted to utilize servicesprovided from an API on server machine 110.

Clients 102A-102N each may include a corresponding secure area 106A-106Nused to store a respective key 108A-108N and other secure data. A securearea 106A-106N generally refers to any area on a computer system that isseparate and inaccessible to a web server, application server, computerprogram or process used to call server machine 110 APIs. For example, asecure area 106A may be a storage area owned by a root account, anadministrative user, or another user. In some examples, data access to asecure area 106A requires privilege escalation or assistance from a useror account authorized to access the secure area 106A (e.g., root,administrator, etc.).

Keys 108A-108N generally refer to one or more pieces of information thatdetermine the functional output of a cryptographic algorithm or cipher.For example, a key 108A may be used to encrypt and/or decrypt varioustypes of data and may include symmetric keys, asymmetric keys, hashfunctions, or any other data that may be used to encrypt or decryptdata. A key 108A may be associated with one or more computer systems ofa client 102A. In an example, a key 108A may be associated with a singleclient 102A computer system or associated with multiple clients102A-102N.

Server machine 110 may be a rackmount server, a router computer, apersonal computer, a portable digital assistant, a mobile phone, alaptop computer, a tablet computer, a camera, a video camera, a netbook,a desktop computer, a media center, or any combination thereof. Servermachine 110 may include a web server 120 and a transactionauthentication system 130. In some examples, web server 120 andtransaction authentication system 130 may run on one or more differentmachines.

Web server 120 may provide text, audio, and video images from data store180 to clients 102A-102N. Web server 120 also may provide web-basedapplication services and business logic to clients 102A-102N. Clients102A-102N may locate, access and consume various forms of content andservices from web server 120 using applications, such as a web browser,web servers, application servers, computer programs, etc. Web server 120also may receive text, audio, video and image content from clients102A-102N that is saved in data store 180 for purposes that may includepreservation and distribution of content. Further, web server 120 mayreceive API requests from various clients 102A-102N.

In an example, web server 120 is coupled to one or more applicationsservers (not shown) that provide applications, services, andtransactional APIs to clients 102A-102N. For example, web server 120 mayprovide clients 102A-102N with access to one or more applicationservices, which include but are not limited to banking, electroniccommerce, e-mail, social networking, etc. Such functionality also may beprovided, for example, as one or more different web applications,standalone applications, systems, plugins, web browser extensions, andapplication programming interfaces (APIs). In some examples, plugins andextensions may be referred to, individually or collectively, as add-ons.

In an example, some clients 102A-102N may include applicationsassociated with a service provided by server 110. In one example, one ormore device types (e.g., smart phones, smart televisions, tabletcomputers, etc.) may use applications to access content provided byserver 110, to issue commands to server 110, and/or to receive contentfrom server 110 without visiting or using web pages.

In an example, functions performed by server 110 and/or web server 120also may be performed by the client machines 102A-102N, in whole or inpart. In addition, the functionality attributed to a particularcomponent may be performed by different or multiple components operatingtogether. Server 110 also may be accessed as a service provided to othersystems or devices via appropriate application programming interfaces,and thus is not limited to use with websites.

In an example, transaction authentication system 130 includes an APIrequest receiver module 140, an API security manager module 150, and anAPI request processor module 160. In other examples, functionalityassociated with API request receiver module 140, API security managermodule 150, and API request processor module 160 may be combined,divided and organized in various arrangements.

In an example, API request receiver module 140 receives API requestssent to server machine 110 by clients 102A-102N. For example, APIrequest receiver module 140 may receive API requests sent from a client102A to a web or application server running on server machine 110. APIrequest receiver module 140 also may receive one or more API credentialsfrom a client 102A, for example, to authenticate use of a secure API bythe client.

In an example, API security manager module 150 receives keys forperforming additional authentication of server machine 110 API requests.For example, API security manager module 150 may receive a respectivekey from each of one or more clients 102A-102N. In one example, APIsecurity manager module 150 receives a key from a client 102A,associates the received key with the client 102A, and stores thereceived key for encrypting one or more additional authenticationchallenges to be issued to the client 102A.

In an example, a client 102A provides an encryption key to servermachine 110 at a time of initial account registration and setup, at asubsequent time as part of an account or registration update, when theaccount associated with the client 102A exceeds a transaction volumethreshold, when the account or sales of the account associated with theclient 102A exceeds a monetary value threshold, when it is determinedthat data handled by the account associated with the client 102A isclassified as sensitive, based on a request from the server, or at anyother time or based on any other criteria.

In an example, API security manager module 150 associates aclient-provided key with a specific client 102A or multiple clients102A-102N during a registration process where one or more clients102A-102N are configured to access a secure API provided by servermachine 110. In one example, API security manager module 150 identifiesand stores information about one or more clients 102A-102N associatedwith a client-provided key. For example, API security manager module 150may collect identifying information about each of one or more clients102A-102N (e.g., machine name, IP address, MAC address, domain, networkinformation, network paths, etc.). Such information may includeattributes unique to a client 102A and other general information knownabout the client (e.g., typical transaction periods, frequency, amounts,etc.). API security manager module 150 may store such information foreach of one or more clients 102A-102N in corresponding client profiles.

In an example, API security manager 150 compares identifying informationknown about a client 102A to new corresponding information gathered,collected or received from a client 102A at another time. For example,API security manager module 150 may compare identifying informationknown about a client 102A to information associated with or gathered atthe time an API interface request is received from the client 102A.

In an example, API security manager module 150 detects a changeassociated with the client 102A based on one or more of identificationinformation associated with a client 102A, network informationassociated with a client 102A, usage of a server machine 110 API by aclient 102A, transactional attributes of an API request received from aclient 102A, etc. For example, API security manager module 150 maygenerate one or more additional authentication challenges to issue to aclient 102A in response to detecting one or more changes associated withidentity and/or behavior of the client 102A.

Additional authentication challenges generally refer to a second orextra level of authentication performed by API security manager module150 to further authenticate a client 102A beyond first-levelauthentication. In some examples, API security manager module 150 maygenerate and issue one or more additional authentication challenges to aclient 102A randomly, in view of a detected change associated with aclient 102A, based on a client 102A request (e.g., during client 102Aregistration or testing), when a client 102A exhibits suspiciousbehavior deviating from an observed pattern of past client 102Abehavior, in addition to first-level authentication to furtherauthenticate a server machine 110 API request received from a client102A, etc. In some examples, a first-level authentication challenge mayask a client 102A to provide one or more credentials, such as ausername, password, PIN, passphrase, etc.

In an example, an additional authentication challenge may request that aclient 102A solve one or more mathematical calculations, answer one ormore questions, or perform one or more tasks. In one example, APIsecurity manager module 150 issues an additional authenticationchallenge to a client 102A requesting that the client 102A perform thetask of obtaining a resource (e.g., a file) from a particular computersystem or network location.

In an example, API security manager module 150 issues an additionalauthentication challenge involving one or more mathematical problems.For example, API security manager module 150 may ask a client 102A tosolve a mathematical problem that is numeric, an equation, a puzzle, ora mathematical problem described in words. In one example, API securitymanager module 150 asks a client 102A to provide a plurality of answersfor a mathematical problem having at least two correct answers (e.g.,correct positive and negative answers, etc.).

In an example, API security manager module 150 encrypts an additionalauthentication challenge generated for a client 102A with a key that hasbeen associated with the client 102A. In one example, API securitymanager module 150 encrypts an additional authentication challenge witha client 102A associated key prior to issuing the additionalauthentication challenge to the client 102A. For example, API securitymanager module 150 may encrypt the additional authentication challengeusing a key previously received from the client 102A during aregistration process to utilize a server machine 110 API.

In an example, a client 102A provided key received by API securitymanager module 150 may be used to perform one of symmetric or asymmetricencryption/decryption between server machine 110 and a client 102A. Inone example, a key 108A provided to API security manager module 150 by aclient 102A may be used both to encrypt and decrypt an additionalauthentication challenge. In another example, a client may provide a keyto API security manager module 150 for encrypting an additionalauthentication challenge that the client 102A later decrypts using acorresponding, but different key 108A. For example, client 102A mayprovide API security manager module 150 with a public key for encryptingdata that client 102A decrypts using a private key 108A stored in ahighly secure area 106A owned by an administrative user account.

In an example, API security manager module 150 issues an additionalauthentication challenge to a client 102A and waits for a response. Inone example, a client 102A receives an encrypted additionalauthentication challenge issued from API security manager module 150.For example, a web server 104A, application server, or other computerprogram running on client 102A may receive an encrypted additionalauthentication challenge from API security manager module 150. The webserver 104A, application server, or other computer program running onclient 102A then may escalate the encrypted additional authenticationchallenge to a privileged user account or process having access to asecure area 106A holding a key 108A for decrypting the encryptedadditional authentication challenge. The elevated user or process thenmay decrypt the additional authentication challenge and return theresult to the calling web server 104A, application server, or othercomputer program of client 102A. Client 102A then may process theadditional authentication challenge and return a corresponding responseto API security manager module 150 for evaluation.

In an example, API security manager module 150 waits for a period oftime after issuing an additional authentication challenge to allow aclient 102A to receive, process, and respond to the additionalauthentication challenge. In one example, API security manager module150 allows a client 102A to respond to an issued additionalauthentication challenge before a timeout occurs based on a threshold.Further, when API security manager module 150 does not receive aresponse from a client 102A before a timeout occurs, then a newadditional authentication challenge may be issued, an issued additionalauthentication challenge may be reissued, or the issued authenticationchallenge may be deemed unsuccessful without further attempt.

In an example, API security manager module 150 receives a response to anissued additional authentication challenge from client 102A, analyzesthe response to the additional authentication challenge received fromthe client 102A, and determines whether the response to the additionalauthentication challenge is correct or acceptable. In one example, APIsecurity manager module 150 then provides a result of the additionalauthentication challenge to API request processor module 160 based onthe determination. For example, API security manager module 150 mayindicate whether the additional authentication challenge issued to aclient 102A was successful or unsuccessful.

In an example, API request processor module 160 performs one or moreactivities based on a result of the additional authentication challenge.For example, API request processor module 160 may execute a servermachine 110 API request received from a client 102A based on asuccessful result of an additional authentication challenge. API requestprocessor module 160 also may deny a server machine 110 API request froma client 102A when an incorrect response is received or no response isprovided for an additional authentication challenge.

In an example, API request processor module 160 blocks one or morepending or subsequent server machine 110 API requests from a client 102Aassociated with an unsuccessful additional authentication challenge. APIrequest processor module 160 also may block one or more pending orsubsequent server machine 110 API requests from clients 102A-102Nrelated to another client associated with an unsuccessful additionalauthentication challenge. For example, multiple clients 102A-102Nassociated with a user account or associated with a party thatcontracted to use a server machine 110 API may be blocked under suchcircumstances.

In an example, API request processor module 160 sends a notification toa user associated with a client 102A account, a server 110 account, or acontracted party when an unsuccessful additional authenticationchallenge occurs and/or a security adjustment is made in response to anunsuccessful additional authentication challenge. For example, APIrequest processor module 160 may notify an account holder by sending ane-mail, initiating a call, sending a text message, etc. In someexamples, API request processor module 160 adjusts a risk modelassociated with one or more clients 102A-102N or accounts based onresults of additional authentication challenges.

FIG. 2 is a flow diagram illustrating transaction verification usingenhanced authentication, according to an example of the presentdisclosure. The method 200 may be performed by processing logic that maycomprise hardware (circuitry, dedicated logic, programmable logic,microcode, etc.), software (such as instructions run on a generalpurpose computer system, dedicated machine, or processing device),firmware, or a combination thereof.

Method 200 begins at block 202 when an API request receiver module 140of a transaction authentication system 130 receives one or morecredentials to authenticate an application programming interface (API)request received from a second computer system based on a first level ofauthentication. In an example, API request receiver module 140 receivesone or more credentials to authenticate a server machine 110 API requestfrom a client 102A. For example, a client may be prompted or use anavailable API to provide one or more of a username, password, PIN,passphrase, etc. to satisfy a first-level of authentication associatedwith a server machine API. In one example, API request receiver module140 receives client 102A credentials with an API request from the client102A. Such credentials may be provided by a client 102A, for example,once at the beginning of a session, one or more times throughout asession, or generally any number of times.

At block 204, an API security manager module 150 of a transactionauthentication system 130 issues an additional authentication challengeto the second computer system to further authenticate the applicationprogramming interface request. In an example, API security managermodule 150 generates an additional authentication challenge to furtherauthenticate a server machine 110 API request from a client 102A beyonda standard first-level of authentication. For example, API securitymanager module 150 may generate an additional authentication challengethat is issued to a client 102A requesting access to or use of a servermachine 110 API.

In an example, API security manager module 150 generates and issues anadditional authentication challenge to a client 102A in response todetecting a change associated with the client 102A. For example, APIsecurity manager module 150 may detect an identity change, a networkchange, a behavioral change, suspicious transactional behavior, oranother change associated with a client 102A. In response, API securitymanager module 150 may generate and issue one or more additionalauthentication challenges to the respective client 102A associated withthe detected change.

In an example, API security manager module 150 receives a response to anadditional authentication challenge from a client 102A. API securitymanager module 150 then analyzes the response to the additionalauthentication challenge to determine whether the response is correct orincorrect. In some examples, a client 102A provides an encryptedresponse to the additional authentication challenge, for example usingSSL, to preserve data privacy and to protect the data from unauthorizedinterception. In one example, API security manager module 150 provides aresult of the additional authentication challenge to API requestprocessor module 160 based on the determination. For example, the resultprovided by API security manager module 150 may indicate whether theadditional authentication challenge was successful or unsuccessful.

At block 206, an API request processor module 160 of a transactionauthentication system 130 processes the application programminginterface request received based on a result of the additionalauthentication challenge. In an example, API request processor module160 of a server machine 110 API executes a request received from aclient 102A based on a successful additional authentication challengeresult. In an example, API request processor module 160 denies a servermachine 110 API request from a client 102A based on an unsuccessfuladditional authentication challenge result.

In an example, API request processor module 160 blocks one or morepending and/or subsequent server machine 110 API requests from a client102A based on an unsuccessful additional authentication challengeresult. In one example, API request processor module 160 blocks one ormore pending and/or subsequent server machine 110 API requests from agroup of clients 102A-102N associated with one or more unsuccessfuladditional authentication challenges. For example, a group of two ormore clients 102A-102N associated with an account or party thatcontracted to use a server machine 110 API may be blocked in response toan unsuccessful authentication challenge result for one client 102A.

In an example, API request processor module 160 notifies one or more ofa user, a client account holder, or a server machine 110 API owner inresponse to one or more unsuccessful additional authenticationchallenges (e.g., a single unsuccessful result, a number of consecutiveunsuccessful results, a proportion of unsuccessful results in a samplingof results that exceeds a predefined threshold, etc.). For example, APIrequest processor module 160 may send an e-mail, initiate a call, send atext message, etc. API request processor module 160 also may adjust arisk model associated with one or more clients 102A-102N based on aresult of an additional authentication challenge. For example, a client102A trust level may increase in response to a successful result and maydecrease in response to an unsuccessful result.

FIG. 3 is a flow diagram illustrating transaction verification usingenhanced authentication with encryption, according to an example of thepresent disclosure. The method 300 may be performed by processing logicthat may comprise hardware (circuitry, dedicated logic, programmablelogic, microcode, etc.), software (such as instructions run on a generalpurpose computer system, dedicated machine, or processing device),firmware, or a combination thereof.

Method 300 begins at block 302 when an API security manager module 150of a transaction authentication system 130 receives a key for encryptingone or more additional authentication challenges to be issued to asecond computer system. In an example, API security manager module 150receives a key for encrypting additional authentication challenges to beissued to a client 102A. For example, API security manager 150 mayreceive the key from client 102A as part of a registration process whereclient 102A is configured to access server machine 110 APIs. In oneexample, API security manager 150 receives a public key from a PGP keypair for encrypting additional authentication challenges to be issued toclient 102A. The public key corresponds to a private key 108A stored ina secure area 106A of the client 102A and is used for decryptingadditional authentication challenges by a privileged client 102A accounthaving access to the secure area 106A.

At block 304, an API request receiver module 140 of a transactionauthentication system 130 receives an application programming interfacerequest from the second computer system. In an example, API requestreceiver module 140 receives a server machine 110 API request from aclient 102A. For example, a client 102A may send an API request toserver machine 110 to call an API providing banking, electroniccommerce, e-mail, social networking, or another service.

At block 306, The API request receiver module 140 receives one or morecredentials to authenticate the application programming interfacerequest based on a first level of authentication. In an example, APIrequest receiver module 140 receives one or more first-levelauthentication credentials from a client 102A seeking to access a servermachine 110 API. First-level authentication credentials may include anycombination of a username, password, PIN, passphrase, etc. In oneexample, API request receiver module 140 receives one or morefirst-level authentication credentials with an API request. In anotherexample, API request receiver module 140 receives first-levelauthentication credentials in a client 102A communication separatelyfrom an API request.

At block 308, API security manager module 150 detects a changeassociated with the second computer system. In an example, API securitymanager module 150 collects and stores information about one or moreclients 102A-102N. For example, API security manager module 150 maygather identifying or other information about each of one or moreclients 102A-102N (e.g., machine name, IP address, MAC address, domain,network information, network paths, etc.). Such information may includeattributes unique to a client 102A and other general information knownabout a client 102A (e.g., typical transaction periods, frequency,amounts, etc.). In one example, API security manager module 150 storessuch information for each of one or more clients 102A-102N in respectiveclient profiles.

In an example, API security manager 150 compares information known abouta client 102A to new corresponding information gathered, collected orreceived from the client 102A at another time. For example, API securitymanager module 150 may compare identifying information known about aclient 102A to information associated with an API interface requestreceived from the client 102A. In one example, API security managermodule 150 detects a change associated with the client 102A based on oneor more of client 102A identification information, client 102A networkinformation, usual client 102A behavior, transactional attributes of anAPI request, frequency of client 102A API requests, etc.

At block 310, API security manager module 150 generates an additionalauthentication challenge to further authenticate the applicationprogramming interface request. In an example, API security managermodule 150 generates an additional authentication challenge in responseto detecting one or more changes associated with the identity orbehavior of a client 102A.

In an example, an additional authentication challenge generated by APIsecurity manager module 150 may include one or more mathematicalcalculations, one or more fact-based, predetermined or secret questions,or one or more tasks. In one example, API security manager module 150generates an additional authentication asking a client 102A to perform atask of obtaining a resource (e.g., a file, data) from a location.

At block 312, API security manager module 150 issues the additionalauthentication challenge to the second computer system. In an example,API security manager module 150 issues an additional authenticationchallenge to a client 102A to further authenticate the identity of theclient 102A beyond first-level authentication. For example, API securitymanager module 150 may issue the additional authentication challenge toa client 102A in response to detecting a change associated with theclient 102A. In some examples, API security manager module 150identifies an identity change, a network change, a behavioral change,suspicious transactional attributes or behavior, or other observeddifference associated with a client 102A.

In an example, API security manager module 150 later receives a responseto the additional authentication challenge from a client 102A andanalyzes the response to determine a result. API security manager module150 then may provide a result of the additional authentication challengeto API request processor module 160 based on the determination. Forexample, the result provided by API security manager module 150 mayindicate whether a client 102A provided a correct or an incorrectresponse to the additional authentication challenge.

At block 314 an API request processor module 160 processes theapplication programming interface request based on a result of theadditional authentication challenge. In an API request processor module160 of a transaction authentication system 130 processes an API requestreceived from a client 102A based on a result of an additionalauthentication challenge. In an example, API request processor module160 of a server machine 110 API executes a server machine 110 APIrequest based on a successful result. In another example, API requestprocessor module 160 denies a server machine 110 API request based on anunsuccessful result.

In an example, API request processor module 160 notifies one or moreusers, account holders, or other parties when an additionalauthentication challenge is unsuccessful. For example, API requestprocessor module 160 may provide notification by sending an e-mail,initiating a call, sending a text message, etc. In one example, APIrequest processor module 160 adjusts a risk model associated with one ormore clients 102A-102N based on a result of an additional authenticationchallenge. For example, a client 102A trust level may increase inresponse to a successful result and may decrease in response to anunsuccessful result.

FIG. 4 illustrates a diagram of a machine in the exemplary form of acomputer system 400 within which a set of instructions, for causing themachine to perform any one or more of the methodologies discussedherein, may be executed. In other examples, the machine may be connected(e.g., networked) to other machines in a LAN, an intranet, an extranet,or the Internet. The machine may operate in the capacity of a server ora client machine in client-server network environment, or as a peermachine in a peer-to-peer (or distributed) network environment. Themachine may be a personal computer (PC), a tablet PC, a set-top box(STB), a Personal Digital Assistant (PDA), a cellular telephone, a webappliance, a server, a network router, switch or bridge, or any machinecapable of executing a set of instructions (sequential or otherwise)that specify actions to be taken by that machine. Further, while only asingle machine is illustrated, the term “machine” shall also be taken toinclude any collection of machines that individually or jointly executea set (or multiple sets) of instructions to perform any one or more ofthe methodologies discussed herein.

The exemplary computer system 400 includes a processing device(processor) 402, a main memory 404 (e.g., read-only memory (ROM), flashmemory, dynamic random access memory (DRAM) such as synchronous DRAM(SDRAM), double data rate (DDR SDRAM), or DRAM (RDRAM), etc.), a staticmemory 406 (e.g., flash memory, static random access memory (SRAM),etc.), and a data storage device 418, which communicate with each othervia a bus 430.

Processor 402 represents one or more general-purpose processing devicessuch as a microprocessor, central processing unit, or the like. Moreparticularly, the processor 402 may be a complex instruction setcomputing (CISC) microprocessor, reduced instruction set computing(RISC) microprocessor, very long instruction word (VLIW) microprocessor,or a processor implementing other instruction sets or processorsimplementing a combination of instruction sets. The processor 402 mayalso be one or more special-purpose processing devices such as anapplication specific integrated circuit (ASIC), a field programmablegate array (FPGA), a digital signal processor (DSP), network processor,or the like. The processor 402 is configured to execute instructions 422for performing the operations and steps discussed herein.

The computer system 400 may further include a network interface device408. The computer system 400 also may include a video display unit 410(e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), analphanumeric input device 412 (e.g., a keyboard), a cursor controldevice 414 (e.g., a mouse), and a signal generation device 416 (e.g., aspeaker).

The data storage device 418 may include a computer-readable storagemedium 428 on which is stored one or more sets of instructions 422(e.g., software) embodying any one or more of the methodologies orfunctions described herein. The instructions 422 may also reside,completely or at least partially, within the main memory 404 and/orwithin the processor 402 during execution thereof by the computer system400, the main memory 404 and the processor 402 also constitutingcomputer-readable storage media. The instructions 422 may further betransmitted or received over a network 420 via the network interfacedevice 408.

In one example, the instructions 422 include instructions for one ormore modules of a transaction authentication system (e.g., transactionauthentication system 130 of FIG. 1) and/or a software librarycontaining methods that call a transaction authentication system 130.While the computer-readable storage medium 428 (machine-readable storagemedium) is shown in an example to be a single medium, the term“computer-readable storage medium” should be taken to include a singlemedium or multiple media (e.g., a centralized or distributed database,and/or associated caches and servers) that store the one or more sets ofinstructions. The term “computer-readable storage medium” shall also betaken to include any medium that is capable of storing, encoding orcarrying a set of instructions for execution by the machine and thatcause the machine to perform any one or more of the methodologies of thepresent disclosure. The term “computer-readable storage medium” shallaccordingly be taken to include, but not be limited to, solid-statememories, optical media, and magnetic media.

In the foregoing description, numerous details are set forth. It will beapparent, however, to one of ordinary skill in the art having thebenefit of this disclosure, that the present disclosure may be practicedwithout these specific details. In some instances, well-known structuresand devices are shown in block diagram form, rather than in detail, inorder to avoid obscuring the present disclosure.

Some portions of the detailed description have been presented in termsof algorithms and symbolic representations of operations on data bitswithin a computer memory. An algorithm is here, and generally, conceivedto be a self-consistent sequence of steps leading to a desired result.The steps are those requiring physical manipulations of physicalquantities. Usually, though not necessarily, these quantities take theform of electrical or magnetic signals capable of being stored,transferred, combined, compared, and otherwise manipulated. It hasproven convenient at times, for reasons of common usage, to refer tothese signals as bits, values, elements, symbols, characters, terms,numbers, or the like.

It should be borne in mind, however, that all of these and similar termsare to be associated with the appropriate physical quantities and aremerely convenient labels applied to these quantities. Unlessspecifically stated otherwise as apparent from the following discussion,it is appreciated that throughout the description, discussions utilizingterms such as “computing”, “comparing”, “applying”, “transmitting”,“receiving,” “processing,” or the like, refer to the actions andprocesses of a computer system, or similar electronic computing device,that manipulates and transforms data represented as physical (e.g.,electronic) quantities within the computer system's registers andmemories into other data similarly represented as physical quantitieswithin the computer system memories or registers or other suchinformation storage, transmission or display devices.

Certain examples of the present disclosure also relate to an apparatusfor performing the operations herein. This apparatus may be constructedfor the intended purposes, or it may comprise a general-purpose computerselectively activated or reconfigured by a computer program stored inthe computer. Such a computer program may be stored in a computerreadable storage medium, such as, but not limited to, any type of diskincluding floppy disks, optical disks, CD-ROMs, and magnetic-opticaldisks, read-only memories (ROMs), random access memories (RAMs), EPROMs,EEPROMs, magnetic or optical cards, or any type of media suitable forstoring electronic instructions.

It is to be understood that the above description is intended to beillustrative, and not restrictive. Many other examples will be apparentto those of skill in the art upon reading and understanding the abovedescription. The scope of the disclosure should, therefore, bedetermined with reference to the appended claims, along with the fullscope of equivalents to which such claims are entitled.

What is claimed is:
 1. A computer system, comprising: a non-transitorymemory storing instructions; and one or more hardware processors coupledto the non-transitory memory and configured to read the instructionsfrom the non-transitory memory to cause the system to perform operationscomprising: receiving an application programming interface (API) requestfrom a client; detecting a change associated with the API request ascompared to a prior use of the API by the client; generating anencrypted challenge to authenticate the API request based on detectingthe change; and issuing the encrypted challenge to the client toauthenticate the API request.
 2. The computer system of claim 1, whereinthe encrypted challenge is encrypted using a key received prior to theAPI request from a party authorized to use the API.
 3. The computersystem of claim 1, wherein the encrypted challenge is an additionalchallenge issued to the client.
 4. The computer system of claim 1,wherein the detecting is based on determining that information knownabout an authorized user associated with the API request differs frominformation associated with the client.
 5. The computer system of claim1, wherein the operations further comprise: processing the API requestbased on a result of issuing the encrypted challenge to the client. 6.The computer system of claim 1, wherein the change is detected based ona change in use of the API by the client when compared to the prior useof the API by the client.
 7. The computer system of claim 1, wherein thechange is detected based on a deviation from a baseline pattern ofactivity associated with the API.
 8. A computer-implemented method,comprising: receiving, by one or more processing devices, an applicationprogramming interface (API) request from a client; detecting, by one ormore of the processing devices, a change associated with the API requestas compared to a prior use of the API by the client; generating, by oneor more of the processing devices, an encrypted challenge toauthenticate the API request based on detecting the change; and issuing,by one or more of the processing devices, the encrypted challenge to theclient to authenticate the API request.
 9. The computer-implementedmethod of claim 8, wherein the encrypted challenge is encrypted using akey received prior to the API request from a party authorized to use theAPI.
 10. The computer-implemented method of claim 8, wherein theencrypted challenge is an additional challenge issued to the client. 11.The computer-implemented method of claim 8, wherein the detectingcomprises determining that information known about an authorized userassociated with the API request differs from information associated withthe client.
 12. The computer-implemented method of claim 8, furthercomprising: processing the API request based on a result of issuing theencrypted challenge to the client.
 13. The computer-implemented methodof claim 8, wherein the change is detected based on a change in behaviorof the client when compared to the prior use of the API by the client.14. The computer-implemented method of claim 8, wherein the change isdetected based on a deviation from a baseline pattern of activityassociated with the API.
 15. A non-transitory machine-readable mediumhaving stored thereon machine-readable instructions executable to causea machine to perform operations comprising: receiving an applicationprogramming interface (API) request from a client; detecting a changeassociated with the API request as compared to a prior use of the API bythe client; generating an encrypted challenge to authenticate the APIrequest based on detecting the change; and issuing the encryptedchallenge to the client to authenticate the API request.
 16. Thenon-transitory machine-readable medium of claim 15, wherein theencrypted challenge is encrypted using a key received prior to the APIrequest from a party authorized to use the API.
 17. The non-transitorymachine-readable medium of claim 15, wherein the encrypted challenge isan additional challenge issued to the client.
 18. The non-transitorymachine-readable medium of claim 15, wherein the detecting comprisesdetermining that information known about an authorized user associatedwith the API request differs from information associated with theclient.
 19. The non-transitory machine-readable medium of claim 15,wherein the operations further comprise: processing the API requestbased on a result of issuing the encrypted challenge to the client. 20.The non-transitory machine-readable medium of claim 15, wherein thechange is detected based on a change in use of the API by the clientwhen compared to the prior use of the API by the client.